/*
 * @Description: quicker变量转换插件
 * @Date: 2021-02-08 08:57:10
 */

/**
 *  驼峰加转换为分隔符
 * @param {String} str
 * @param {String} separator 分隔符
 */
function camelToStrike(str, separator) {
  var temp = str.replace(/([A-Z])/g, `${separator}$1`).toLowerCase();
  if (temp.startsWith(separator)) {
    temp = temp.slice(1);
  }
  return temp;
}
/**
 * 转换为驼峰命名
 * @param {String} str
 */
function convertToCamel(str) {
  return str.replace(/[^\w]+(\w)/g, function (all, letter) {
    return letter.toUpperCase();
  });
}
// .js 主函数 exec()
function exec() {
  const temp = quickerGetVar("initStr"); // 读取initStr变量值, (initStr 是动作里的变量)
  const initStr = temp.trim();
  var convertType = quickerGetVar("convertType"); // 读取initStr变量值, (initStr 是动作里的变量)

  var convertStr = "";
  switch (convertType) {
    case "驼峰>>中划线":
      convertStr = camelToStrike(initStr, "-");
      break;
    case "驼峰>>下划线":
      convertStr = camelToStrike(initStr, "_");
      break;
    case "驼峰>>中划线并大写":
      convertStr = camelToStrike(initStr, "-").toUpperCase();
      break;
    case "驼峰>>下划线并大写":
      convertStr = camelToStrike(initStr, "_").toUpperCase();
      break;
    case "转大驼峰":
      let temp = convertToCamel(initStr);
      convertStr = temp.charAt(0).toUpperCase() + temp.slice(1);
      break;
    case "转小驼峰":
      let temp1 = convertToCamel(initStr);
      convertStr = temp1.charAt(0).toLowerCase() + temp1.slice(1);
      break;
    case "全大写":
      convertStr = initStr.toUpperCase();
      break;
    case "全小写":
      convertStr = initStr.toLowerCase();
      break;
    case "首字母大写":
      convertStr = initStr.charAt(0).toUpperCase() + initStr.slice(1);
      break;
    case "首字母小写":
      convertStr = initStr.charAt(0).toLowerCase() + initStr.slice(1);
      break;
    default:
      break;
  }

  quickerSetVar("initStr", convertStr); // 输出修改后的值到initStr变量中。
  return 0; // 返回0表示成功。返回其他数字表示失败。
}
// Scan code to pay